/*
 * State.h
 *
 *  Created on: 29-06-2013
 *      Author: Jarek
 */

#ifndef STATE_H_
#define STATE_H_

#include "GlobalData.h"
#include "Input.h"
#include "ETime.h"

class State
{
public:
	enum STATE_TYPE
	{
		STATE_NONE = 0,
		STATE_MAIN_MENU,
		STATE_LOADING,
		STATE_DEMO,


		STATE_MAX
	};
protected:
	STATE_TYPE			stateType;
public:
	State();
	virtual ~State();

	virtual bool 		onInitialize() { return true; }
	virtual void 		onDestroy () {}
	virtual void 		onRun (const ETime& time) {}
	virtual void 		onDraw (const ETime& time) {}
	virtual bool 		handleInput (const ETime& time, const Input& input) 	{ return false; }

	STATE_TYPE			getType			() { return stateType; }
};

#endif /* STATE_H_ */
